<script setup>
import $mRoutesIdx from '@/common/router/routes.idx'
import $mUtils from '@/common/utils'
import store from '@/store'

// #ifdef APP-PLUS
import APPUpdate from '@/uni_modules/APPUpdate/js_sdk/appUpdate'
// #endif

// 静默授权，获取TOKEN
// function getToken() {
// 	// #ifdef MP
// 	return new Promise(resolve => {
// 		uni.login({
// 			success: async res => {
// 				const { code, data } = await $apis.postLogin(
// 					{
// 						encrypted_data: 1,
// 						code: res.code,
// 						iv: 1
// 					},
// 					// #ifdef MP-WEIXIN
// 					'wx.mini',
// 					// #endif
// 					// #ifdef MP-TOUTIAO
// 					'tt.mini'
// 					// #endif
// 				)
// 				if (code == 0 && data.token) {
// 					// 登录储存
// 					store.user.login({
// 						expires_in: data.expires_in,
// 						access_token: data.token
// 					})
// 				}
// 				resolve()
// 			},
// 			fail() {
// 				resolve()
// 			}
// 		})
// 	})
// 	// #endif
// }

// 获取系统信息
function getSystemInfo() {
	uni.getSystemInfo({
		success(e) {
			// #ifndef MP
			uni.setStorageSync('statusBar', e.statusBarHeight)
			uni.setStorageSync('customBar', e.statusBarHeight + 45)
			// #endif

			// #ifdef MP
			uni.setStorageSync('statusBar', e.statusBarHeight)
			if (uni.canIUse('getMenuButtonBoundingClientRect')) {
				let custom = uni.getMenuButtonBoundingClientRect()
				uni.setStorageSync('customBar', custom.bottom + custom.top - e.statusBarHeight + 4) // +4为了兼容uview u-navbar导航栏高度)
			} else {
				uni.setStorageSync('customBar', e.statusBarHeight + 50)
			}
			// #endif

			// #ifdef MP-ALIPAY
			uni.setStorageSync('statusBar', e.statusBarHeight)
			uni.setStorageSync('customBar', e.statusBarHeight + e.titleBarHeight)
			// #endif
		}
	})
}

// 全局变量-项目版本
// const globalData = {
// 	version: '1.0.0'
// }

onLaunch(() => {
	// 获取系统信息
	getSystemInfo()

	// #ifdef APP-PLUS
	// APP 更新
	if (import.meta.env.MODE == 'production') APPUpdate()
	// #endif
})

onShow(options => {
	console.log('App Show options', options)

	// #ifdef MP-WEIXIN
	if ([1011, 1012, 1013].includes(options.scene)) {
		// 模拟器获取 query，真机获取 q
		if (options.query?.q) {
			uni.removeStorageSync('codeScene')
			let q = decodeURIComponent(options.query.q).split('?')[1]
			let theQuery = $mUtils.strParseParam(q)
			options.query = theQuery
			uni.setStorageSync('codeScene', theQuery)
			console.log('1011 codeScene: ', options.query, theQuery)
		}
	} else if ([1047, 1048, 1049].includes(options.scene)) {
		// if ({ ...options.query }.hasOwnProperty('scene')) {
		// 	uni.removeStorageSync('codeScene') // 先清除小程序码数据
		// 	let scene = decodeURIComponent(options.query.scene) // 正式上，取参在options.query.scene，模拟器上取参在options.query
		// 	let code = $mUtils.getQueryString('code', scene) || 0
		// 	// 查询小程序二维码参数
		// 	await $apis.getMiniCode(code).then(res => {
		// 		if (res.code == 0) {
		// 			let theQuery = $mUtils.strParseParam(res.data.scene)
		// 			options.query = theQuery
		// 			uni.setStorageSync('codeScene', theQuery)
		// 			console.log('1047 codeScene: ', theQuery)
		// 		}
		// 	})
		// }
	} else if (
		[
			1036, 1037, 1038, 1044, 1065, 1069, 1073, 1074, 1091, 1096, 1007, 1008, 1035, 1058, 1043,
			1067, 1082, 1102, 1154, 1155, 1179, 1167, 1194
		].includes(options.scene)
	) {
		uni.removeStorageSync('codeScene')
		let extraData = {}
		if (options.referrerInfo && options.referrerInfo.extraData) {
			extraData = Object.assign(options.query, options.referrerInfo.extraData)
		} else {
			extraData = options.query
		}
		console.log('1037从小程序进入，1038从小程序放回', extraData)
		uni.setStorageSync('codeScene', { ...extraData, scene: options.scene }) // 小程序带过来的参数
		options.query = extraData
	}
	// #endif

	// #ifdef H5
	// 公众号授权回调链接
	if (options.query && options.query.token) {
		store.user.login({
			expires_in: 1209600,
			access_token: options.query.token
		})
	}

	// pageCode动态跳转
	if (options.query && options.query.pageCode) {
		let pageCode = options.query.pageCode
		delete options.query.pageCode
		$mRoutesIdx.navigateToIdx(pageCode, options.query)
	}
	// #endif

	// 获取版本管理
	// store.state.getVersionInfo(globalData.version)

	// 更新Tabbar
	// store.state.updateTabbar()

	// 静默授权，获取TOKEN
	// if (!store.user.hasLogin) {
	// 	// await getToken()
	// }
	// 登录状态获取用户信息
	// if (store.user.hasLogin) {
	// 	// await store.user.getUsers()
	// }

	// 用户数据
	// const userData = store.user.userData

	// 存在参数请求换绑接口
	// if (userData.userInfo.is_merchant) {
	// 	if (options.query.merchant_id && options.query.merchant_id != 1) {
	// 		$apis.postChangeBind({
	// 			open_merchant_id: options.query.merchant_id
	// 		})
	// 	}
	// }

	// 小程序更新
	if (uni.getUpdateManager) {
		const updateManager = uni.getUpdateManager()
		updateManager.onCheckForUpdate()
		updateManager.onUpdateReady(() => {
			uni.showModal({
				title: '更新提示',
				content: '新版本已经准备好，是否重启应用？',
				success(res) {
					if (res.confirm) {
						// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
						updateManager.applyUpdate()
					}
				}
			})
		})
		updateManager.onUpdateFailed(() => {
			// 新的版本下载失败
			uni.showModal({
				title: '已经有新版本了哟~',
				content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~',
				showCancel: false
			})
		})
	}
})
</script>

<style lang="scss">
/*每个页面公共css */
@import './common/colorui/icon.css';
@import './common/colorui/main.css';
@import './common/colorui/animation.css';
@import './uni_modules/uview-ui/index.scss';
</style>
